package com.xzx.spark.core.action

import org.apache.spark.{SparkConf, SparkContext}

/**
 *
 * ${DESCRIPTION}
 *
 * @author xinzhixuan
 * @version 1.0
 * @date 2021-08-07 9:41 上午
 */
object Spark006_Aggregate {
  def main(args: Array[String]): Unit = {
    val sc = new SparkContext(new SparkConf().setMaster("local[*]").setAppName(getClass.getSimpleName))
    // 分区的数据通过初始值和分区内的数据进行聚合，然后再和初始值进行分区间的数据聚合
    val result: Int = sc.makeRDD(List(3, 1, 2, 4), 8).aggregate(1)(_+_, _+_)
    //分析输出结果，4个分区有数据，4个分区没数据，分区内计算完的结果是：（3+1）+（1+1）+（2+1）+（4+1） + 4*1(4个没有数据的初始值)=18
    // 分区间计算结果：因为最终只有一个分区，18+1=19
    println(result)// 19
    sc.stop()
  }
}
